#! /user/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/12/28 9:55 AM
# @Author  : Aman [WangSL]
# @FileName: sparrowLogs.py
# @Software: PyCharm

import logging
import config

format_dict = {
   1 : logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s'),
   2 : logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s'),
   3 : logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s'),
   4 : logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s'),
   5 : logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
}

# 指定保存日志的文件路径，日志级别，以及调用文件将日志存入到指定的文件中
class Logger():
    def __init__(self, logname, loglevel, logger):
        # 创建一个logger
        self.logger = logging.getLogger(logger)
        self.logger.setLevel(config.createLoggerLogLeverConfig)

        # 创建一个handler，用于写入日志文件
        self.fh = logging.FileHandler(logname, encoding='utf-8')
        self.fh.setLevel(config.writeFileLogLeverConfig)

        # 再创建一个handler，用于输出到控制台
        self.ch = logging.StreamHandler()
        self.ch.setLevel(config.printConsoleLogLeverConfig)

        # 定义handler的输出格式
        formatter = format_dict[int(loglevel)]
        self.fh.setFormatter(formatter)
        self.ch.setFormatter(formatter)

        # 给logger添加handler
        self.logger.addHandler(self.fh)
        self.logger.addHandler(self.ch)

    def getlog(self):
        return self.logger

    def rmHandler(self):
        # 定义删除handler函数，如果执行完后不调用会出现累加输出日志的问题
        self.logger.removeHandler(self.ch)
        self.logger.removeHandler(self.fh)
        return;

# 调用方式
# logger = Logger(logname=config.logsFilePath, loglevel=1, logger='sparrow').getlog()  # 每个不同功能（函数）调用的时候，logger的名字不能重复
# logger.info('hello, China!')